Operators & Dual Unitary Chaos
In this tutorial we use the quantum toolkit, and specifically the operator framework to efficiently validate dual unitary chaos. For further reading you can read the general analytical setup and proof here. We are going to use the numerical setup here. This problem is interesting for a few reasons. First it showcases the power of the operator framework. We will use features that can build quantum circuits as well as construct a custom kernel for a global, diagonal operator that is not directly supported in the quantum toolkit. Second it is physically interesting because it features a space-time swap. We will be computing things on the time lattice and computing thermodynamic limit properties of our system in real space.
The articles aren't necessary to understand this tutorial.
We wish to understand the spectrum of the following operator expression,
where our system sits on a time lattice of size coupling a forward and backward lattice of size each. In the expression,
we have a tensor product between the forward and backward lattice where couples odd to even nearest neighbour sites. We take both the forward and backward time lattices to be periodic: if we label our forward lattice with coordinates then .
where our gate is the space-time swapped version of the real-space gate,
you can see a quick explanation for space time swapping a gate here Similar to the odd to even layer of quantum gates, couples even to odd nearest neighbour time lattice coordinates.
The final detail of our expression to understand is the operator . This operator is split into two acting on odd and even sites respectively,
and we further break down into and components. Taking the odd operator as an example,
Finally, acts as a non-expanding operator in the -basis that either leaves a product state untouched (scales by 1) or completely suppresses a product state (scales the coefficient by 0). For this operator, you need to check the magnetization in the x direction for the odd sites in the forward lattice, and likewise for the odd sites in the backward lattice. If the magnetization is identical between the two lattices on odd sites then you scale by unity, and if the magnetization is different you set the coefficient to zero. The other operators are the same, for example you test the basis magnetization instead and calculate it only for even lattice sites.
This completes our setup for the problem, let's start coding in aleph!
Investigating the spectrum
Space time swapping
The first step to solve this problem is to construct our real space gates and space time swap them. This is accomplished by reorganizing the entries of the matrix that represents our operator.
def st_swapped_du(Js)
{
// this line spawns the matrix V we want to swap.
var U = exp(1i*pi/4*matrix(X(0)*X(1) + Y(0)*Y(1)+Js*Z(0)*Z(1)));
var U_swapped = zeros([4,4]);
//here we handle the swapping by collecting our "in" qubits and "out" qubits
// with a Qbit with 4 sites, in qubits are treated as in the first two
// out qubits are the second two degrees of freedom.
// U_swapped is then filled from the spatial evolution perspective
for(psi : qbit_range(4))
{
var psi_pair = psi.split(2,2);
U_swapped[psi[2]+2*psi[0],psi[3]+2*psi[1]] = U[psi_pair[0],psi_pair[1]]
}
return U_swapped
}